Author

Kamil Burza Gr.2

Published

June 27, 2024

Kilka ciekawostek o sobie
Interesuję się branżą muzyczną i filmową. Życie leci mi przy akompaniamencie różnych melodii. Uwielbiam uprawiać i oglądać sport (szczególnie piłkę nożną). Amatorsko gram w szachy, kocham podróżować i poznawać świat. Ukończyłem technikum nr.4 na kierunku informatyk w Tarnowie. Poniżej link do mojego profilu Filmweb:

https://www.filmweb.pl/user/HowToCarpeDiem

Budapeszt

Manchester

1 Pozyskanie danych i opis

Wykorzystałem dane z “PogromcówDanych”. Zawierają one oceny poszczególnych odcinków seriali z bazy IMDB.

Show the code
  serialeIMDB <- as_tibble(serialeIMDB)
  view(serialeIMDB)
  serialeIMDB
# A tibble: 20,122 × 8
      id serial       nazwa                    sezon odcinek ocena glosow imdbId
   <int> <fct>        <fct>                    <fct> <fct>   <dbl>  <dbl> <fct> 
 1     1 Breaking Bad Pilot                    1     1         8.7   9357 tt090…
 2     2 Breaking Bad Cat's in the Bag...      1     2         8.2   6506 tt090…
 3     3 Breaking Bad ...And the Bag's in the… 1     3         8.3   6176 tt090…
 4     4 Breaking Bad Cancer Man               1     4         7.9   5796 tt090…
 5     5 Breaking Bad Gray Matter              1     5         7.9   5664 tt090…
 6     6 Breaking Bad Crazy Handful of Nothin' 1     6         8.7   6521 tt090…
 7     7 Breaking Bad A No-Rough-Stuff-Type D… 1     7         8.4   5732 tt090…
 8     8 Breaking Bad Seven Thirty-Seven       2     1         8.1   5312 tt090…
 9     9 Breaking Bad Grilled                  2     2         8.7   6096 tt090…
10    10 Breaking Bad Bit by a Dead Bee        2     3         7.9   5025 tt090…
# ℹ 20,112 more rows
Kolumna Opis danych
id Unikalny numer id
Serial Nazwa serialu
Nazwa Nazwa odcinka
Sezon Numer sezonu
Odcinek Numer odcinku
Ocena Wysokość oceny użytkowników
Głosów Liczba głosów użytkowników
imdbid Unikalny numer id dla serialu

2 Przetwarzanie potokowe

Wypisuję najlepiej ocenione odcinki z danymi, największą liczbę głosów, najwyższą ocenę oraz tworzę kolumnę z słowną oceną odcinka.

Show the code
serialeIMDB %>%
    filter(ocena > 8.2, glosow > 5000) %>%
        select(serial, nazwa, sezon, odcinek, ocena, glosow) %>%
    group_by(ocena) ->  NajlepszeOdc

NajlepszeOdc
# A tibble: 111 × 6
# Groups:   ocena [18]
   serial       nazwa                         sezon odcinek ocena glosow
   <fct>        <fct>                         <fct> <fct>   <dbl>  <dbl>
 1 Breaking Bad Pilot                         1     1         8.7   9357
 2 Breaking Bad ...And the Bag's in the River 1     3         8.3   6176
 3 Breaking Bad Crazy Handful of Nothin'      1     6         8.7   6521
 4 Breaking Bad A No-Rough-Stuff-Type Deal    1     7         8.4   5732
 5 Breaking Bad Grilled                       2     2         8.7   6096
 6 Breaking Bad Peekaboo                      2     6         8.3   5499
 7 Breaking Bad Better Call Saul              2     8         8.5   5519
 8 Breaking Bad 4 Days Out                    2     9         8.5   5513
 9 Breaking Bad Phoenix                       2     12        8.6   5548
10 Breaking Bad ABQ                           2     13        8.6   5627
# ℹ 101 more rows
Show the code
serialeIMDB %>%
   summarise(maxgl = max(glosow, na.rm = T),
              maxoc = max(ocena, na.rm = T))
# A tibble: 1 × 2
  maxgl maxoc
  <dbl> <dbl>
1 60011    10
Show the code
serialeIMDB %>%
 mutate(kl_ocena = cut(ocena, breaks = 7, labels = c("Bardzo bardzo słabe", "Bardzo słabe", "Słabe", "Średnie", "Dobre", "Bardzo dobre", "Arcydzieło"))) -> seriale

3 Interaktywna tabela

Dodana kolumna ocenia słownie dany odcinek, w 7 kategoriach : “Bardzo bardzo słabe”, “Bardzo słabe”, “Słabe”, “Średnie”, “Dobre”, “Bardzo dobre”, “Arcydzieło”.

Show the code
datatable(seriale)

4 Funkcja

Funkcja liczy logarytm 2 stopnia dla iloczynu ocen i e od b, podzielonego przez sumę sin x i pierwiastek od najwyższej oceny. Na końcu jest dodawana największa liczba głosów.

Show the code
obliczenia <- function(ocenaBB, ocename, glosmax, b, x) {
  x <-  as.numeric(10)
b <-  as.numeric(20)
ocename = mean(serialeIMDB$ocena)
glosmax = max(serialeIMDB$glosow)
  ((log2(ocenaBB) * exp(b)/sin(x) + sqrt(ocename))+glosmax) 
plot(ocename, glosmax) ->obl2
return(obl2)
}
#$$((log2(ocenaBB) * exp(b)/sin(x) + sqrt(ocename))+glosmax) -> obl$$
#obl

5 Pętla

Niestety przez problemy z pakietem dplyr, nie byłem w stanie doprowadzić do wyniku. Zostawiłem w poniższym stanie.

Show the code
setwd("D:/ProjektR_SPD_BazaOcen/CSV")

baza <- c("SpongeBob SquarePants", "Phineas and Ferb", "BoJack Horseman")
sezony <- c(13, 4, 6)
oceny <- c(7.2,7.6,8.6)
jeden <- data.frame(baza, sezony, oceny)
write.csv(jeden, "jeden.csv")


baza <- c("Chernobyl", "Rick and Morty", "The Queen's Gambit")
sezony <- c(1, 6, 1)
oceny <- c(8.9,8.6,8.2)
dwa <- data.frame(baza, sezony, oceny)
write.csv(dwa, "dwa.csv")

baza <- c("Cowboy Bepop", "Vikings", "When They See us")
sezony <- c(1, 6, 1)
oceny <- c(8.3,8.4,8.2)
trzy <- data.frame(baza, sezony, oceny)
write.csv(trzy, "trzy.csv")

#plikicsv <- c("jeden.csv", "dwa.csv", "trzy.csv")
 # data_tibble <- tibble()

  
  #plikicsv |>
   # map_dfr(.x = _, .f = ~rio::import(file = .)) |>
    #as_tibble

 
setwd("D:/ProjektR_SPD_BazaOcen")
   # lista_csv <- dir()
  #lista_csv
  
  #df_list <- map(lista_csv, read_csv)
  #df_list
  
  #bind_rows(df_list)
  #bind_rows(df_list, .id = 'baza')
  
  #plikicsv <- dir("CSV")
  #plikicsv
  
  #bind_rows('plikicsv')
  
  #dir_ls('plikicsv') %>% 
  #map_dfr(read_csv, .id = 'jeden')

#for(file in plikicsv) {}

6 Wykresy

6.1 Wykres1

Show the code
seriale %>%
  filter(serial == "Breaking Bad") %>%
  select(sezon) -> sezonBB

seriale %>%
  filter(serial == "Breaking Bad") %>%
  select(ocena) -> ocenaBB

seriale %>%
  filter(serial == "Breaking Bad") %>%
  select(odcinek) -> odcinekBB

danewykres <- data.frame(sezonBB,ocenaBB, odcinekBB)
danewykres$sezon_i_odcinek <- paste(danewykres$sezon, danewykres$odcinek)

danewykres <- as.tibble(danewykres)

danewykres$sezon <- as.numeric(danewykres$sezon) 
danewykres$odcinek <- as.numeric(danewykres$odcinek) 

#danewykres$sezon_i_odcinek <- as.numeric(danewykres$sezon_i_odcinek) 

danewykres %>%
ggplot(., aes(sezon, ocena)) +
  geom_smooth(color = "black", size = 1.2, linetype = "solid") +
  labs(title = "Średnia ocena sezonów Breaking Bad przez użytkowników",
       x = "Sezon",
       y = "Ocena") +
  theme(title = element_text(size = 11, face = "bold.italic"),
        axis.title.x = element_text(size = 12,
                                    face = "italic"),
        axis.title.y = element_text(size = 12,
                                    face = "italic")) -> wykres1
wykres1

6.2 Wykres2

Show the code
seriale %>%
  filter(serial == "Game of Thrones") %>%
  select(ocena) -> ocenaGOT
view(ocenaGOT)
seriale %>%
  filter(serial == "Game of Thrones") %>%
  select(glosow) -> glosyGOT

danewykresgot <- data.frame(ocenaGOT, glosyGOT)

danewykresgot %>%
ggplot(., aes(glosow, ocena)) +
  geom_point(size = 1.3, color = 2, pch = 18, cex = 2) +  
  labs(title = "Stosunek liczy głosów użytkowników do oceny odcinka Game of Thrones",
       x = "Głosy",
       y = "Ocena") +
  theme(title = element_text(size = 11, face = "bold.italic"),
        axis.title.x = element_text(size = 15,
                                    face = "bold"),
        axis.title.y = element_text(size = 15,
                                    face = "bold"))-> wykres2

wykres2

Show the code
# scale_x_continuous(limits = c(1,5)) 
# scale_y_continuous(limits = c(0,10))

7 Wykres plotly

Wykres przedstawia średnią ocen w serwisie IMDB oraz zysk 3 najbardziej dochodowych filmów. Najpierw stworzyłem potrzebne dane, następnie wykres, dodałem do niego dodatkową kolumnę.

Show the code
Filmy2 <- c("Avatar", "Avengers: Endgame", "Titanic")
Dochód_w_USD <- as.numeric(c(2.9, 2.8, 2.2))
Średnia_ocen_IMDB <- c(7.9, 8.4, 7.9)
baza4 <- data_frame(Filmy2, Dochód_w_USD, Średnia_ocen_IMDB)

wyk3 <- plot_ly(baza4, x = ~Filmy2, y = ~Dochód_w_USD, type = 'bar', name = 'Dochód w mld USD')
wyk3 <- wyk3 %>% add_trace(y = ~Średnia_ocen_IMDB, name = 'Średnia ocen IMDB w skali 0-10')
wyk3 <- wyk3 %>% layout(yaxis = list(title = '0-10'), barmode = 'group')

wyk3